<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/plantillas/plantillaPrincipal.xhtml">
        <ui:define name="contenido">
            <f:view>
                <h:form id="formulario">

                    <p:panel header="Registrar Factura" style="width:85%;margin: 10px auto;">

                        <p:panelGrid style="width:100%;margin: 10px auto;" id="panelFactura">
                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblTipoOrden" value="CODIGO DE OP: " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:selectOneMenu id="cbxPedido" value="#{BKCompraFacturacion.facturaFormulario.idOrdenPedido.id}" 
                                                     style="width: 160px" filter="#{BKCompraFacturacion.listaOrdenesPedidoFormulario.size() gt 10}" 
                                                     filterMatchMode="contains"> 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKCompraFacturacion.listaOrdenesPedidoFormulario}" var="ordenP" 
                                                       itemLabel="#{ordenP.codigoOrdenPedido}" itemValue="#{ordenP.id}" />
                                        <p:ajax update="cbxCS,dataTablaDetalleOrden,btnGuardar,slctGuias" listener="#{MBCompraFacturacion.listarOrdenCS}"/>
                                    </p:selectOneMenu>

                                    <p:message for="cbxPedido" display="text" />
                                </p:column>
                                <p:column colspan="1" style="width:200px">
                                    <h:outputLabel id="lblNroOrdenCS" value="CODIGO DE ORDEN C/S(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:selectOneMenu id="cbxCS" value="#{BKCompraFacturacion.facturaFormulario.idOrdenCompraServicio.id}" 
                                                     style="width: 140px" filter="#{BKCompraFacturacion.listaOrdenesCSFormulario.size() gt 10}" 
                                                     filterMatchMode="contains" panelStyle="width: 300px;font-size:11px"> 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKCompraFacturacion.listaOrdenesCSFormulario}" var="ordenCS" 
                                                       itemLabel="#{ordenCS.codigo} (#{ordenCS.tipo eq 67?ordenCS.idCategoriaArticulo.nombre:ordenCS.servicio})" itemValue="#{ordenCS.id}" />
                                        <p:ajax listener="#{MBCompraFacturacion.obtenerListaGuias}"
                                                update="txtProveedor,cbxMoneda,fdsNegociacion,btnGuardar,dataTablaDetalleOrden,slctGuias" />
                                    </p:selectOneMenu>
                                    <p:message for="cbxCS" display="text" />
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblSerie" value="SERIE(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:inputText id="txtSerie" required="true"
                                                 value="#{BKCompraFacturacion.facturaFormulario.serie}" maxlength="3" >
                                        <f:validateRegex pattern="[0-9]*" />
                                    </p:inputText>  
                                    <p:message for="txtSerie" display="text" />
                                </p:column>

                                <p:column>
                                    <h:outputLabel id="lblNumFactura" value="NRO FACTURA(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:inputText id="txtNumFactura" required="true" 
                                                 value="#{BKCompraFacturacion.facturaFormulario.numeroFactura}" maxlength="8" >
                                        <f:validateRegex pattern="[0-9]*" />
                                    </p:inputText>  
                                    <p:message for="txtNumFactura" display="text" />
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblProveedor" value="PROVEEDOR(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <h:outputText id="txtProveedor" value="#{BKCompraFacturacion.facturaFormulario.idProveedor.nombreComercial}" />
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblMoneda" value="MONEDA(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column>
                                    <p:selectOneMenu id="cbxMoneda" required="true" converter="#{tipoMonedaConverter}"
                                                     value="#{BKCompraFacturacion.facturaFormulario.idTipoMoneda}" 
                                                     disabled="#{BKCompraFacturacion.facturaFormulario.idOrdenCompraServicio.id eq 0 || BKCompraFacturacion.listaDetalleFactura.size() gt 0}" > 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                        <f:selectItems value="#{BKCompraFacturacion.listaTipoMoneda}" var="mon" 
                                                       itemLabel="#{mon.nombre}" itemValue="#{mon}"/>
                                        <p:ajax process="@this" event="change" />
                                    </p:selectOneMenu>
                                    <p:message for="cbxMoneda" display="text"/>
                                </p:column>
                            </p:row>

                            <p:row>

                                <p:column>
                                    <h:outputLabel id="lblFechaEmision" value="FECHA EMISION(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column>
                                    <p:calendar id="calendarFechaEmision" value="#{BKCompraFacturacion.facturaFormulario.fecEmision}" 
                                                pattern="dd/MM/yyyy" showOn="button" showButtonPanel="true" navigator="true" 
                                                disabled="#{BKCompraFacturacion.listaDetalleFactura.size() gt 0}"
                                                required="true" size="12" locale="es">
                                        <p:ajax event="dateSelect" listener="#{MBCompraFacturacion.marcarFecha}" update="txtCambio,calendarFechaEmision,llenarDetalle" />
                                    </p:calendar>
                                    <p:message for="calendarFechaEmision"/>
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblCambio" value="TIPO CAMBIO(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <h:outputText id="txtCambio" value="#{BKCompraFacturacion.facturaFormulario.tipoCambio}" />
                                </p:column>

                            </p:row>

                            <p:row>
                                <p:column colspan="4">
                                    <p:fieldset toggleable="true" legend="Condiciones de Pago" style="width:98%;margin: 10px auto;" id="fdsNegociacion">
                                        <p:panelGrid style="width:100%;margin: 10px auto;">
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblFormaPago" value="FORMA DE PAGO(*): " styleClass="lblForm" />
                                                </p:column>
                                                <p:column>
                                                    <p:selectOneMenu id="cbxFormaPago" required="true" 
                                                                     value="#{BKCompraFacturacion.facturaFormulario.formaPago.nombre}"> 
                                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                                        <f:selectItems value="#{BKCompraFacturacion.listaFormaPago}" var="forma" 
                                                                       itemLabel="#{forma.nombre}" itemValue="#{forma.nombre}"/>	
                                                        <p:ajax update="cbxTipoPago,txtDiasPago" process="@this" listener="#{MBCompraFacturacion.elegirFormaPago}" />
                                                    </p:selectOneMenu>
                                                    <p:message for="cbxFormaPago" display="text"/>	
                                                </p:column>
                                                <p:column>
                                                    <h:outputLabel id="lblTipoPago" value="TIPO DE PAGO(*): " styleClass="lblForm" />
                                                </p:column>
                                                <p:column>
                                                    <p:selectOneMenu id="cbxTipoPago" required="true" 
                                                                     value="#{BKCompraFacturacion.facturaFormulario.tipoPago}"> 
                                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                                        <f:selectItems value="#{BKCompraFacturacion.listaTipoPago}" var="tipo" 
                                                                       itemLabel="#{tipo}" itemValue="#{tipo}"/>
                                                    </p:selectOneMenu>
                                                    <p:message for="cbxTipoPago" display="text"/>	
                                                </p:column>

                                            </p:row>
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblDiasPago" value="DIAS PARA PAGAR: " styleClass="lblForm" />
                                                </p:column>
                                                <p:column>
                                                    <p:inputText id="txtDiasPago" maxlength="3" 
                                                                 disabled="#{BKCompraFacturacion.facturaFormulario.formaPago.nombre ne 'CREDITO'}"
                                                                 value="#{BKCompraFacturacion.facturaFormulario.diasPago}"/>
                                                    <p:message for="txtDiasPago" display="text"/>
                                                </p:column>
                                                <p:column>
                                                    <h:outputLabel id="lblComentario" value="COMENTARIO PAGO: " styleClass="lblForm" />
                                                </p:column>
                                                <p:column >
                                                    <p:inputTextarea id="inTxtComentario" rows="3" cols="40" maxlength="250" 
                                                                     value="#{BKCompraFacturacion.facturaFormulario.comentarioPago}"/>
                                                </p:column>

                                            </p:row>

                                        </p:panelGrid>
                                    </p:fieldset>
                                </p:column>
                            </p:row>



                            <p:row>
                                <p:column>
                                    <h:outputText value="ELEGIR GUIAS: " styleClass="lblForm" />  
                                </p:column>
                                <p:column colspan="3">
                                    <p:selectManyCheckbox  id="slctGuias" value="#{BKCompraFacturacion.listaGuiaSeleccionadas}" layout="pageDirection">  
                                        <f:selectItems value="#{BKCompraFacturacion.listaGuiaRemisionElegir}" var="g"
                                                       itemLabel="#{g.serie}-#{g.numeroGuia}" itemValue="#{g.id}"/>  
                                        <p:ajax event="change" process="@this" update="cbxMoneda,llenarDetalle,dataTablaDetalleOrden,btnGuardar"  
                                                listener="#{MBCompraFacturacion.cambiarGuia}"/>
                                    </p:selectManyCheckbox >  
                                </p:column>
                            </p:row>
                            <p:row>
                                <p:column colspan="4" >
                                    <p:commandButton id="llenarDetalle" value="REGISTRAR DETALLES" update="detalleFactura,btnGuardar,calendarFechaEmision,cbxMoneda,messagesBoton" 
                                                     disabled="#{BKCompraFacturacion.listaGuiaSeleccionadas.size() eq 0}"
                                                     actionListener="#{MBCompraFacturacion.llenarDetalle}" process="@this" />  
                                    <p:messages id="messagesBoton" showDetail="false"  autoUpdate="true" closable="true" globalOnly="true"/>
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column colspan="4">
                                    <p:fieldset legend="DETALLE DE FACTURA" toggleable="true" id="detalleFactura">
                                        <p:panelGrid  style="width:90%">
                                            <p:row>
                                                <p:column colspan="4">
                                                    <p:dataTable id="dataTablaDetalleOrden" var="detalle" widgetVar="carsTable" editable="true"
                                                                 value="#{BKCompraFacturacion.listaDetalleFactura}" style="width: 100%"
                                                                 emptyMessage="No se encontro detalle de la factura" filteredValue="" rowIndexVar="rowIndex"> 
                                                        <p:ajax event="rowEdit" listener="#{MBCompraFacturacion.editarDetalle}" 
                                                                update=":formulario:txtValorVenta,:formulario:txtIGV,:formulario:txtTotalGral" />
                                                        <p:column id="idColumnaNum" headerText="Num." style="width: 5%"> 
                                                            <h:outputText value="#{rowIndex+1}" /> 
                                                        </p:column>

                                                        <p:column id="idDescripcion"
                                                                  headerText="Descripcion"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.idArticulo.nombreComercial}" /> 
                                                        </p:column>

                                                        <p:column id="idUnidadMedida" rendered="false"
                                                                  headerText="UM"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="kg" /> 
                                                        </p:column>

                                                        <p:column id="idCantidad"
                                                                  headerText="Cant."  
                                                                  filterMatchMode="contains"> 

                                                            <p:cellEditor>  
                                                            <f:facet name="output">  
                                                                <h:outputText value="#{detalle.cantidad}" style="float: right" > 
                                                                    <f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
                                                                </h:outputText >   
                                                            </f:facet>  
                                                            <f:facet name="input">  
                                                                <p:inputText onkeyup="cambiarMayuscula(this)" value="#{detalle.cantidad}" 
                                                                             style="width:100%" >
                                                                </p:inputText> 

                                                            </f:facet>
                                                                </p:cellEditor>  
                                                        </p:column>

                                                        <p:column id="idPrecio"
                                                                  headerText="Precio"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.precioUnitario}" style="float: right" > 
                                                                <f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
                                                            </h:outputText >   
                                                        </p:column>

                                                        <p:column id="idSubTotal" 
                                                                  headerText="Sub Total"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.precioTotal}" style="float: right" >
                                                                <f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
                                                            </h:outputText>
                                                        </p:column>

                                                        <p:column id="idAccionesCuentaBancariaFO" headerText="Acciones" >    
                                                            <p:rowEditor  transient="true" />  
                                                        </p:column>

                                                    </p:dataTable>
                                                </p:column>
                                            </p:row>


                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblValorVenta" value="SUBTOTAL" class="negrita" />
                                                </p:column>
                                                <p:column colspan="3"> 
                                                    <h:outputText id="txtValorVenta" 
                                                                  value="#{BKCompraFacturacion.facturaFormulario.subTotal}">
                                                        <f:convertNumber minFractionDigits="2" maxFractionDigits="2" groupingUsed="false" />
                                                    </h:outputText>
                                                </p:column>

                                            </p:row>

                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblIGV" value="IGV (18%)" class="negrita" />
                                                </p:column>
                                                <p:column colspan="3">
                                                    <h:outputText id="txtIGV" value="#{BKCompraFacturacion.facturaFormulario.igv}" >
                                                        <f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
                                                    </h:outputText>
                                                </p:column>
                                            </p:row>
                                            <p:row>
                                                <p:column >
                                                    <h:outputLabel id="lblTotalGral" value="TOTAL GENERAL" class="negrita" />
                                                </p:column>
                                                <p:column colspan="3">
                                                    <h:outputText id="txtTotalGral" value="#{BKCompraFacturacion.facturaFormulario.total}" >
                                                        <f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
                                                    </h:outputText>
                                                </p:column>
                                            </p:row>

                                        </p:panelGrid>


                                    </p:fieldset>
                                </p:column>
                            </p:row>

                        </p:panelGrid>


                        <p:panelGrid style="width:40%;margin: 10px auto;">

                            <p:row>
                                <p:column>
                                    <p:commandButton  action="#{BKCompraFacturacion.comando.aceptar()}" ajax="false" 
                                                      value="#{BKCompraFacturacion.comando.nombre}" id="btnGuardar"
                                                      disabled="#{BKCompraFacturacion.listaDetalleFactura.size() eq 0}"/>
                                </p:column>
                                <p:column>
                                    <p:commandButton action="#{MBCompraFacturacion.cancelar()}" ajax="false" immediate="true" value="Cancelar"/>
                                </p:column>
                            </p:row>	

                        </p:panelGrid>

                        <h:panelGrid styleClass="mensaje_obligatorio">(*) Campos Requeridos</h:panelGrid>

                    </p:panel>

                </h:form>


            </f:view>
        </ui:define>

    </ui:composition>
</html>